package com.mmy.service.impl.visa;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mmy.controller.UtilConstants;
import com.mmy.dao.visa.TVisaBaseRepository;
import com.mmy.dao.visa.VVisaBaseRepository;
import com.mmy.domain.sys.TSysUser;
import com.mmy.domain.visa.TVisaBase;
import com.mmy.domain.visa.VVisaBase;
import com.mmy.service.ServiceCommon;
import com.mmy.service.visa.VisaBaseService;

@Service
public class VisaBaseServiceImpl implements VisaBaseService {

	@Autowired
	VVisaBaseRepository vVisaBaseRepository;
	@Autowired
	TVisaBaseRepository tVisaBaseRepository;
	@Autowired
	ServiceCommon common;

	/**
	 * 通过计划单ID查询
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 */
	public VVisaBase findByVisaID(int iVisaID) {
		// TODO Auto-generated method stub
		return vVisaBaseRepository.findByVisaID(iVisaID);
	}

	/**
	 * 前台首页签证模块
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2021.02.23
	 */
	public List<VVisaBase> findVisa() {
		// TODO Auto-generated method stub
		// 查询最新创建的签证前8条
		return vVisaBaseRepository.findVisa();
	}

	/**
	 * 后台签证管理中显示自己公司的签证信息如果为管理员显示全部
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	public List<VVisaBase> findVisaBase(TSysUser sessionSysUser) {
		int iOrgID = sessionSysUser.getOrgID();
		List<VVisaBase> lstVisaBase = new ArrayList<VVisaBase>();
		if (sessionSysUser.getUserID() == 0) {
			lstVisaBase = vVisaBaseRepository.findAll();
		} else {
			lstVisaBase = vVisaBaseRepository.findByOrgID(iOrgID);
		}
		return lstVisaBase;
	}

	/**
	 * 后台签证管理中显示自己公司的签证信息如果为管理员显示全部 异步加载表格
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间2021.03.17
	 */

	public List<VVisaBase> findByOrgID(TSysUser sessionSysUser, String strVisaName, String strZoneID, String strType,
			int startIndex, int count) {
		if (strVisaName == null)
			strVisaName = "";
		if (strZoneID == null)
			strZoneID = "";
		if (strType == null)
			strType = "";
		int iOrgID = sessionSysUser.getOrgID();
		List<VVisaBase> lstVisaBase = new ArrayList<VVisaBase>();
		if (sessionSysUser.getUserID() == 0) {
			lstVisaBase = vVisaBaseRepository.findSearchALL(strVisaName, strZoneID, strType, startIndex, count);
		} else {
			lstVisaBase = vVisaBaseRepository.findSearchByOrgID(iOrgID, strVisaName, strZoneID, strType, startIndex,
					count);
		}
		return lstVisaBase;
	}

	/**
	 * 后台签证管理中显示自己公司的签证信息如果为管理员显示全部 分页
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间2021.03.17
	 */

	public int queryBaseCount(TSysUser sessionSysUser, String strVisaName, String strZoneID, String strType) {
		if (strVisaName == null)
			strVisaName = "";
		if (strZoneID == null)
			strZoneID = "";
		if (strType == null)
			strType = "";
		int iOrgID = sessionSysUser.getOrgID();
		int count = 0;
		if (sessionSysUser.getUserID() == 0) {
			count = vVisaBaseRepository.countALL(strVisaName, strZoneID, strType);
		} else {
			count = vVisaBaseRepository.countByOrgID(iOrgID, strVisaName, strZoneID, strType);
		}
		return count;
	}

	/**
	 * 通过区域ID查找是否已有签证存在
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.03.17
	 * 
	 */
	public List<TVisaBase> findByZoneID(String strZoneID, String strType) {
		int iZoneID = Integer.parseInt(strZoneID);
		Byte bType = Byte.valueOf(strType);
		return tVisaBaseRepository.findByZoneID(iZoneID, bType);
	}

	/**
	 * 获得最大签证编号
	 * 
	 * @return 返回值说明 最大签证编码
	 * @author 创建人 dingxd 整理hanxl
	 * @date 创建日期 2020.11.17 时间2021.03.17
	 */
	public int getMaxVisaID() {
		// 流水号
		Object objCode = tVisaBaseRepository.getMaxVisaID();
		int iID = 0;
		if (objCode != null) {
			iID = Integer.parseInt(objCode.toString());
		}
		return iID;
	}

	/**
	 * 创建签证
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.03.17
	 * 
	 */
	public void createVisaBase(TVisaBase tVisaBase, TSysUser sessionSysUser) {
		// TODO Auto-generated method stub
		// 获得最大签证编号
		tVisaBase.setVisaID(common.createBaseCode(UtilConstants.TableName.T_VISA_BASE));
		tVisaBase.setCreateDate(new Date());
		tVisaBase.setCreator(sessionSysUser.getUserName());
		tVisaBase.setSpare1(String.valueOf(sessionSysUser.getOrgID()));
		tVisaBaseRepository.save(tVisaBase.getVisaID());

		tVisaBaseRepository.save(tVisaBase);
	}

	public void updateVisaBase(TVisaBase tVisaBase, TSysUser sessionSysUser) {
		int iVisaID = tVisaBase.getVisaID();

		/* 定义一个新的实体类对象 */
		TVisaBase dbVisaBase = tVisaBaseRepository.findByiVisaID(iVisaID);

		dbVisaBase.setVisaName(tVisaBase.getVisaName());
		dbVisaBase.setZoneID(tVisaBase.getZoneID());
		dbVisaBase.setType(tVisaBase.getType());
		dbVisaBase.setDay(tVisaBase.getDay());
		dbVisaBase.setFloor(tVisaBase.getFloor());
		dbVisaBase.setPeer(tVisaBase.getPeer());
		dbVisaBase.setPrice(tVisaBase.getPrice());
		dbVisaBase.setMemo(tVisaBase.getMemo());
		dbVisaBase.setModifyDate(new Date());
		dbVisaBase.setReviser(sessionSysUser.getUserName());

		tVisaBaseRepository.save(dbVisaBase);

	}
}
